FEXP Solver  1.0.0.0
FEXPSerialization.h
Go to the documentation of this file.
1 // © FEXP, FEXPEnterprise Solver, Ing. Vaclav Rek
3 // Library for structure of various files
4 // Compiler must support C++ ver.14 and later
6 #ifndef _CFEXPSERIALIZATION_H_
7 #define _CFEXPSERIALIZATION_H_
8 #include "FEXPCommon.h"
9 
16 // typedef for serialized FE data
17 using t_SerializedData = std::vector<std::string>;
21 {
22  static const std::string NODE_KEY;
23  static const std::string ELEM_KEY;
24  static const size_t ITEM_ID_INDEX;
25  // pure virtual function for NETWORK serialization/deserialization
26  virtual Ptr<t_SerializedData> NetSerialize () = 0;
27  virtual void NetDeserialize(Ptr<t_SerializedData> data) = 0;
28 };
29 
36 // structure of model input file
37 #define INP_FILE_STRUCT_BLCS NmspcFileModelData::INP_FILE_BLOCK_SRUCT
38 #define INP_FILE_STRUCT_TABS NmspcFileModelData::INP_FILE_TABS
39 
42 {
49  {
50  "CALCULATION.dynamic" ,
51  "CALCULATION.material" ,
52  "CALCULATION.constrains",
53  "CALCULATION.loads" ,
54  "GEOMETRY.nodes" ,
55  "GEOMETRY.elements"
56  };
57 
62 
67  const std::string INP_FILE_TABS[EFileTab::eTCount] =
68  {
69  "TAB_D1" ,
70  "TAB_M1" ,
71  "TAB_CSTR_V",
72  "TAB_CSTR_A",
73  "TAB_LOAD_F",
74  "TAB_LOAD_A",
75  "TAB_ND1" ,
76  "TAB_EL1"
77  };
78 
84  {
85  public:
86  using t_TableDef = std::map<std::string, std::string>;
87  using t_TableHed = std::map<std::string, t_TableDef>;
88  using t_TableMap = std::map<std::string, t_TableHed>;
89 
90  static const t_TableDef & GetTable(const std::string & block_key, const std::string & tab_key) { return TABLE_MAP[block_key][tab_key]; }
91  protected:
92  // [no protected members] -----------------------------
93  private:
94  static t_TableMap TABLE_MAP;
95  };
96 
97  // string key for model data for each block of file structure
98 #define INP_FILE_STRUCT_STR_KEY(cls) STRUCT_KEYS(INP_FILE_STRUCT_BLCS, CLS_KEY(cls))
99  // input model data for each block of file structure
100 #define INP_BLOCK_CLS(cls, basecls) CLS_MAP_PAIR(INP_FILE_STRUCT_BLCS, cls, basecls)
101  // input model data for each block of file structure
102 #define INP_TABLE_CLS(cls, basecls) CLS_MAP_PAIR(INP_FILE_STRUCT_TABS, cls, basecls)
103  // gives table column definition
104 #define INP_FILE_TAB(block_key, tab_key) NmspcFileModelData::CFEXPDataTables::GetTable((block_key), INP_FILE_STRUCT_TABS[(tab_key)])
105 }
106 
113 // structure of solver input file
114 #define SOLVER_CONFIG_FILE_STRUCT_BLCS NmspcConfigFileSolverData::SOLVER_CONFIG_INP_FILE_BLOCK_SRUCT
115 #define SOLVER_CONFIG_FILE_STRUCT_TABS NmspcConfigFileSolverData::SOLVER_CONFIG_INP_FILE_TAB
116 
119 {
122  enum EFileBlocks { eBl1 = 0, eBl2, eBl3, eBlCount };
126  {
127  "SERVER.init",
128  "SOLVER.input_files" ,
129  "SOLVER.calc_behaviour"
130  };
131 
136 
142  {
143  "TAB_IPS" ,
144  "TAB_FLS" ,
145  "TAB_FLS_DFLT",
146  "TAB_CALC"
147  };
148 
154  {
155  public:
156  using t_TableDef = std::map<std::string, std::string>;
157  using t_TableHed = std::map<std::string, t_TableDef>;
158  using t_TableMap = std::map<std::string, t_TableHed>;
159 
160  static const t_TableDef & GetTable(const std::string & block_key, const std::string & tab_key) { return TABLE_MAP[block_key][tab_key]; }
161  protected:
162  // [no protected members] -----------------------------
163  private:
164  static t_TableMap TABLE_MAP;
165  };
166 
167  // string key for data for each block of file structure
168 #define SERVER_INP_FILE_STRUCT_STR_KEY(cls) STRUCT_KEYS(SOLVER_CONFIG_FILE_STRUCT_BLCS, CLS_KEY(cls))
169  // input data for each block of file structure
170 #define SERVER_INP_BLOCK_CLS(cls, basecls) CLS_MAP_PAIR(SOLVER_CONFIG_FILE_STRUCT_BLCS, cls, basecls)
171  // input data for each block of file structure
172 #define SERVER_INP_TABLE_CLS(cls, basecls) CLS_MAP_PAIR(SOLVER_CONFIG_FILE_STRUCT_TABS, cls, basecls)
173  // gives table column definition
174 #define SERVER_INP_FILE_TAB(block_key, tab_key) NmspcConfigFileSolverData::CFEXPDataTables::GetTable((block_key), SOLVER_CONFIG_FILE_STRUCT_TABS[(tab_key)])
175 }
176 
183 // structure of output file
184 #define RESULT_FILE_STRUCT_BLCS NmspcFileResData::RESULT_FILE_BLOCK_SRUCT
185 #define RESULT_FILE_STRUCT_TABS NmspcFileResData::RESULT_FILE_TAB
186 
189 {
192  enum EFileBlocks { eBl1 = 0, eBlCount };
194  {
195  "RESULTS"
196  };
197 
202 
205  const std::string RESULT_FILE_TAB[EFileTab::eRTCount] =
206  {
207  "RESULTS.TAB_NDS" ,
208  "RESULTS.TAB_FETRIAG"
209  };
210 
216  {
217  public:
218  using t_TableDef = std::map<std::string, std::string>;
219  using t_TableHed = std::map<std::string, t_TableDef>;
220  using t_TableMap = std::map<std::string, t_TableHed>;
221 
222  static const t_TableDef & GetTable(const std::string & block_key, const std::string & tab_key) { return TABLE_MAP[block_key][tab_key]; }
223  protected:
224  // [no protected members] -----------------------------
225  private:
226  static t_TableMap TABLE_MAP;
227  };
228 
229  // string key for data for each block structure
230 #define RESULT_FILE_STRUCT_STR_KEY(cls) STRUCT_KEYS(RESULT_FILE_STRUCT_BLCS, CLS_KEY(cls))
231  // input data for each block structure
232 #define RESULT_BLOCK_CLS(cls, basecls) CLS_MAP_PAIR(RESULT_FILE_STRUCT_BLCS, cls, basecls)
233  // input data for each block structure
234 #define RESULT_TABLE_CLS(cls, basecls) CLS_MAP_PAIR(RESULT_FILE_STRUCT_TABS, cls, basecls)
235  // gives table column definition
236 #define RESULT_FILE_TAB(block_key, tab_key) NmspcFileResData::CFEXPDataTables::GetTable((block_key), RESULT_FILE_STRUCT_TABS[(tab_key)])
237 }
238 
239 #endif // !_CFEXPSERIALIZATION_H_
Definition: FEXPSerialization.h:138
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:122
static const size_t ITEM_ID_INDEX
Definition: FEXPSerialization.h:24
Definition: FEXPSerialization.h:204
static const t_TableDef & GetTable(const std::string &block_key, const std::string &tab_key)
Definition: FEXPSerialization.h:160
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:64
const std::string SOLVER_CONFIG_INP_FILE_BLOCK_SRUCT[EFileBlocks::eBlCount]
Definition of blocks within the solver configuration file.
Definition: FEXPSerialization.h:125
EFileBlocks
File block ID.
Definition: FEXPSerialization.h:45
Definition: FEXPSerialization.h:192
Definition: FEXPSerialization.h:45
Definition: FEXPSerialization.h:192
EFileTab
File table ID.
Definition: FEXPSerialization.h:64
std::map< std::string, std::string > t_TableDef
Definition: FEXPSerialization.h:218
Definition: FEXPSerialization.h:45
Definition: FEXPSerialization.h:64
std::map< std::string, std::string > t_TableDef
Definition: FEXPSerialization.h:156
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:138
Structure of results.
Definition: FEXPSerialization.h:188
Definition: FEXPCommon.h:276
Definition: FEXPSerialization.h:45
std::map< std::string, t_TableHed > t_TableMap
Definition: FEXPSerialization.h:88
Definition: FEXPSerialization.h:153
FE model data structure.
Definition: FEXPSerialization.h:41
Definition: FEXPSerialization.h:45
Base interface for data serialization.
Definition: FEXPSerialization.h:20
Definition: FEXPSerialization.h:45
Definition: FEXPSerialization.h:138
const std::string RESULT_FILE_BLOCK_SRUCT[EFileBlocks::eBlCount]
Definition: FEXPSerialization.h:193
EFileTab
Table ID.
Definition: FEXPSerialization.h:204
EFileBlocks
Block ID.
Definition: FEXPSerialization.h:192
Definition: FEXPSerialization.h:204
Definition: FEXPSerialization.h:122
Definition: FEXPSerialization.h:45
virtual Ptr< t_SerializedData > NetSerialize()=0
Definition: FEXPSerialization.h:64
std::vector< std::string > t_SerializedData
Definition: FEXPSerialization.h:17
Definition: FEXPSerialization.h:122
Configuration file structure for FEXP solver.
Definition: FEXPSerialization.h:118
static const std::string ELEM_KEY
Definition: FEXPSerialization.h:23
Definition: FEXPSerialization.h:83
std::map< std::string, t_TableDef > t_TableHed
Definition: FEXPSerialization.h:157
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:122
std::map< std::string, t_TableDef > t_TableHed
Definition: FEXPSerialization.h:87
std::map< std::string, std::string > t_TableDef
Definition: FEXPSerialization.h:86
EFileBlocks
File block ID.
Definition: FEXPSerialization.h:122
virtual void NetDeserialize(Ptr< t_SerializedData > data)=0
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:45
const std::string RESULT_FILE_TAB[EFileTab::eRTCount]
Definition: FEXPSerialization.h:205
Definition: FEXPSerialization.h:138
const std::string INP_FILE_BLOCK_SRUCT[EFileBlocks::eBlCount]
Definition of blocks within the input data file.
Definition: FEXPSerialization.h:48
std::map< std::string, t_TableHed > t_TableMap
Definition: FEXPSerialization.h:158
Definition: FEXPSerialization.h:138
static const t_TableDef & GetTable(const std::string &block_key, const std::string &tab_key)
Definition: FEXPSerialization.h:222
Definition: FEXPSerialization.h:215
static const std::string NODE_KEY
Definition: FEXPSerialization.h:22
const std::string INP_FILE_TABS[EFileTab::eTCount]
Definition of tables in blocks within the input data file.
Definition: FEXPSerialization.h:67
std::map< std::string, t_TableHed > t_TableMap
Definition: FEXPSerialization.h:220
EFileTab
File table ID.
Definition: FEXPSerialization.h:138
std::map< std::string, t_TableDef > t_TableHed
Definition: FEXPSerialization.h:219
static const t_TableDef & GetTable(const std::string &block_key, const std::string &tab_key)
Definition: FEXPSerialization.h:90
Definition: FEXPSerialization.h:64
Definition: FEXPSerialization.h:204
const std::string SOLVER_CONFIG_INP_FILE_TAB[EFileTab::eSTCount]
Definition of tables in blocks within the solver configuration file data file.
Definition: FEXPSerialization.h:141